Technical Q&A QA1236
Debugging Graphics with QuartzDebug


Q: QuartzDebug ÇégópǵǃÉOÉâÉtÉBÉbÉNÉXÇÃñ‚ëËÇÉfÉoÉbÉOÇ∑ÇÈÇ…ÇÕǫǧÇ∑ÇÍÇŒÇÊÇ¢ÇÃÇ≈ǵÇÂǧǩÅH

A: QuartzDebug ÇÕÅAÉOÉâÉtÉBÉbÉNÉXÇÃï\é¶Ç‚ÉpÉtÉHÅ[É}ÉìÉXÇ…ä÷Ç∑ÇÈäeéÌÇÃñ‚ëËÇìÀÇ´ÇΔÇflÇÈÇÃÇ…ñóßǬÅAÇ¢Ç≠ǬǩÇÃã≠óÕÇ»ÉcÅ[ÉãÇîıǶÇΩÅAQuatrz ÉOÉâÉtÉBÉbÉNÉXÉVÉXÉeÉÄópÇÃÉfÉoÉbÉOÉCÉìÉ^ÉtÉFÅ[ÉXÇ≈Ç∑ÅBQuartzDebug ÇÃç≈êVÉoÅ[ÉWÉáÉìÇÕÅADZDZǩÇÁÉ_ÉEÉìÉçÅ[ÉhÇ≈Ç´Ç‹Ç∑ÅB

íçãLÅFQuartzDebug ÇÕÅAǪÇÃñºëODžLJǩǩÇÌÇÁÇ∏ÅAMac OS X Çà QuickDraw ÇÃèàóùÇÉfÉoÉbÉOÇ∑ÇÈÇΩÇflÇÃå¯â ìIÇ»ÉcÅ[ÉãDžLJǻÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅBï`âÊèàóùÇÕÇ∑Ç◊ǃÅAç≈èIìIÇ…ÇÕ Quartz ÇåoóRÇ∑ÇÈÇΩÇflÇ≈Ç∑ÅB


ÉIÉvÉVÉáÉìÉEÉCÉìÉhÉEÇΔÉEÉCÉìÉhÉEÉäÉXÉg

QuartzDebug ÇãNìÆÇ∑ÇÈÇΔÅAQuartzDebug ÉIÉvÉVÉáÉìÉEÉCÉìÉhÉEÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑Åiê} 1ÅjÅBDZÇÃÉEÉCÉìÉhÉEÇ…ÇÕÅAÉfÉoÉbÉOÇ…ä÷Ç∑ÇÈ 4 ǬÇÃÉ`ÉFÉbÉNÉ{ÉbÉNÉXÅiç≈èâÇÕÇ∑Ç◊ǃëIëâèúÇ≥ÇÍǃǢNjÇ∑ÅjÇΔÅuShow Window ListÅvÉ{É^ÉìǙdžÇËÇ‹Ç∑ÅB

ÅuAutoflush drawingÅvÉ`ÉFÉbÉNÉ{ÉbÉNÉXÇÕÅACGContextFlush() Çë“ÇΩÇ∏Ç…ÅA1 âÒÇÃï`âÊèàóùÇÃå„Ç…ÅACoreGraphics ÉOÉâÉtÉBÉbÉNÉXÉRÉìÉeÉLÉXÉgÇÃì‡óeÇë|Ç´èoǵNjÇ∑ÅBDZÇÍÇÕÅA1 âÒÇÃï`âÊèàóùÇñàâÒí≤Ç◊ÇÈÇΔÇ´Ç…ñóßÇøÇ‹Ç∑ÅB

ÅuFlash screen updatesÅvÇ™ëIëÇ≥ÇÍǃǢÇÈÇΔÅADZÇÍÇ©ÇÁçXêVÇ≥ÇÍÇÈÉXÉNÉäÅ[ÉìÇÃóÃàÊÇ™â©êFÇ≈ï`âÊÇ≥ÇÍÅAàÍéûí‚é~ǵÇΩå„ÅAé¿ç€Ç…ÉXÉNÉäÅ[ÉìÇ™çXêVÇ≥ÇÍÇ‹Ç∑ÅBDZÇÍÇ…ÇÊÇËÅAÉXÉNÉäÅ[ÉìÇÃçXêVÇ™çsÇÌÇÍÇÈóléqÇå©ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBàÍéûí‚é~Ç∑ÇÈDZÇΔÇ≈ÅAâ©êFÇÃóÃàÊÇämîFÇ≈Ç´ÇÈÇÊǧDžǻǡǃǢNjÇ∑ÅBàÍéûí‚é~ÇµÇ»ÇØÇÍÇŒÅAÉXÉNÉäÅ[ÉìÇÕë¶ç¿Ç…ÅAǮǪÇÁÇ≠îFéØÇ≈ǴǻǢë¨Ç≥Ç≈çXêVÇ≥ÇÍÇ‹Ç∑ÅBàÍéûí‚é~ÇÉIÉtÇ…Ç∑ÇÈÇ…ÇÕÅAÅuNo delay after flashÅvÉIÉvÉVÉáÉìÇëIëǵNjÇ∑ÅB

ÅuFlash identical updates (red)ÅvÇ™ëIëÇ≥ÇÍǃǢÇÈÇΔÅADZÇÍÇ©ÇÁçXêVÇ≥ÇÍÇÈÇØÇÍǫLJÅAÉEÉCÉìÉhÉEÇÃÉoÉbÉLÉìÉOÉXÉgÉAÇÃä˘ë∂ÇÃì‡óeÇΔìØÇ∂Ç≈džÇÈÉXÉNÉäÅ[ÉìÇÃóÃàÊÇ™ê‘Ç≈ï`âÊÇ≥ÇÍÇ‹Ç∑ÅBǪÇÃå„ÅAàÍéûí‚é~ǵÇΩå„ÅAé¿ç€Ç…ÉXÉNÉäÅ[ÉìÇ™çXêVÇ≥ÇÍÇ‹Ç∑ÅBDZÇÍÇ…ÇÊÇËÅAì‡óeÇ™Ç∑Ç≈Ç…ÉEÉCÉìÉhÉEÇÃÉoÉbÉLÉìÉOÉXÉgÉADždžÇÈèÍçáÇ…ÅAÉEÉCÉìÉhÉEÇÃÇ«ÇÃóÃàÊÇ™èdï°ÇµÇƒï`âÊÇ≥ÇÍǃǢÇÈÇÃÇ©Çå©ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBàÍéûí‚é~ÇÉIÉtÇ…Ç∑ÇÈÇ…ÇÕÅAÅuNo delay after flashÅvÉIÉvÉVÉáÉìÇëIëǵNjÇ∑ÅB

QuartzDebug options window
ê} 1. QuartzDebug ÇÃÉIÉvÉVÉáÉìÉEÉCÉìÉhÉE

ÅuShow Window ListÅvÉ{É^ÉìÇÕÅAÉVÉXÉeÉÄëSëÃÇÃÉEÉCÉìÉhÉEÉäÉXÉgÇÃê√ìIÉXÉiÉbÉvÉVÉáÉbÉgÇï\é¶ÇµÇ‹Ç∑ÅBDZÇÃÉäÉXÉgÇ…ÇÊÇËÅAǪÇÍǺÇÍÇÃÉEÉCÉìÉhÉEÇÃèäóLé“ÇΔÅAÉEÉCÉìÉhÉEÇ™êËóLǵǃǢÇÈÉÅÉÇÉäÇì¡íËÇ≈Ç´Ç‹Ç∑ÅBDZÇÍÇÕÅAÉoÉbÉtÉ@ÉäÉìÉOÇ≥ÇÍÇΩÉEÉCÉìÉhÉEÇ™ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉÅÉÇÉäégópó Ç…Ç«ÇÃÇÊǧDžâeãøÇµÇƒÇ¢ÇÈÇ©ÇóùâÇ∑ÇÈÇÃÇ…ñóßÇøÇ‹Ç∑ÅB

ê} 2 Ç…ÅAÉEÉCÉìÉhÉEÉäÉXÉgÇÃÉTÉìÉvÉãÇé¶ÇµÅAï\ 1 Ç…ÉEÉCÉìÉhÉEÉäÉXÉgÇÃäeóÒÇÃà”ñ°Çê‡ñæÇµÇ‹Ç∑ÅB

DZÇÃÉäÉXÉgÇÕÉXÉiÉbÉvÉVÉáÉbÉgÇ≈džÇËÅAé©ìÆìIÇ…ÇÕçXêVÇ≥ÇÍÇ‹ÇπÇÒÅBÉXÉiÉbÉvÉVÉáÉbÉgÇçXêVÇ∑ÇÈÇ…ÇÕÅALJǧ 1 ìxÅuShow Window ListÅvÉ{É^ÉìÇâüÇ∑Ç©ÅAÅuFileÅvÉÅÉjÉÖÅ[Ç©ÇÁÅuShow Window ListÅvÇëIÇ—Ç‹Ç∑ÅBêVǵǢÉXÉiÉbÉvÉVÉáÉbÉgÇå©ÇÈÇ…ÇÕÅAÉEÉCÉìÉhÉEÉäÉXÉgÇÃÉEÉCÉìÉhÉEÇâ∫Ç…ÉXÉNÉçÅ[ÉãÇ≥ÇπÇÈïKóvǙdžÇËÇ‹Ç∑ÅB

QuartzDebug window list
ê} 2. QuartzDebug ÇÃÉEÉCÉìÉhÉEÉäÉXÉg

ï\ 1. QuartzDebug ÇÃÉEÉCÉìÉhÉEÉäÉXÉgÇÃóÒÇÃê‡ñæ

óÒê‡ñæ
CIDÉEÉCÉìÉhÉEÇÃê⁄ë± IDÅBÉEÉCÉìÉhÉEÉTÅ[ÉoÇ…ÇÊǡǃì‡ïîìIÇ…égópÇ≥ÇÍÇ‹Ç∑ÅBí èÌÅA1 ǬÇÃÉvÉçÉZÉXÇ…ÇÊǡǃèäóLÇ≥ÇÍǃǢÇÈÇ∑Ç◊ǃÇÃÉEÉCÉìÉhÉEÇ™ìØÇ∂ê⁄ë± ID ÇéùÇøÇ‹Ç∑ÅB
ApplicationÉEÉCÉìÉhÉEÇèäóLÇ∑ÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃñºëOÅB
WIDÉEÉCÉìÉhÉEé©ëÃÇà IDÅBÉEÉCÉìÉhÉEÉTÅ[ÉoÇ…ÇÊǡǃì‡ïîìIÇ…égópÇ≥ÇÍÇ‹Ç∑ÅB
kBytesÉEÉCÉìÉhÉEÉoÉbÉtÉ@ǂǟǩÇÃëÂÇ´Ç»ÉfÅ[É^ç\ë¢Ç…ÇÊǡǃêËóLÇ≥ÇÍǃǢÇÈÉÅÉÇÉäÇÃó ÅBÉLÉçÉoÉCÉgíPà Ç≈é¶Ç≥ÇÍÇ‹Ç∑ÅBÅiçXêVÇïKóvÇΔǵǃǢÇÈÇΩÇflÇ…ÅjÉoÉbÉtÉ@Ç™ñ≥å¯Ç»èÍçáÇÕÅAÉTÉCÉYÇÃå„ÇÎÇ… I ÇÃï∂éöÇ™í«â¡Ç≥ÇÍÇ‹Ç∑ÅBÉEÉCÉìÉhÉEÉTÅ[ÉoÇ…ÇÊǡǃÉEÉCÉìÉhÉEÇ™é©ìÆìIÇ…à≥èkÇ≥ÇÍǃǢÇÈèÍçáÇÕÅAC ÇÃï∂éöÇ™í«â¡Ç≥ÇÍÇ‹Ç∑ÅB
OriginÉXÉNÉäÅ[ÉìÇ…ëŒÇ∑ÇÈëäëŒìIÇ»ÉEÉCÉìÉhÉEÇÃå¥ì_ÅiÉsÉNÉZÉãêîÅjÅB
SizeÉEÉCÉìÉhÉEÇÃÉTÉCÉYÅiÉsÉNÉZÉãêîÅjÅB
Type ÅuBufferedÅvÇÃÉEÉCÉìÉhÉEÇÕÅAã§óLÉÅÉÇÉäÇ…ÉoÉbÉtÉ@ÉäÉìÉOÇ≥ÇÍÇ‹Ç∑ÅBÉOÉâÉtÉBÉbÉNÉXèàóùÇÕÇ∑Ç◊ǃÉoÉbÉNÉoÉbÉtÉ@Ç…ãLò^Ç≥ÇÍÅAïKóvÇ…âûÇ∂ǃÉEÉCÉìÉhÉEÉTÅ[ÉoÇ…ÇÊǡǃÉXÉNÉäÅ[ÉìÇ…ï`âÊÇ≥ÇÍÇ‹Ç∑ÅBÅuRetainedÅvÇÃÉEÉCÉìÉhÉEÇÕÅAÇŸÇ©ÇÃÉEÉCÉìÉhÉEÇ…ÇÊǡǃâBÇ≥ÇÍǃǢÇÈïîï™ÇæÇØÇ™ÉoÉbÉtÉ@Ç…ï€ë∂Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃåãâ ÅAdžÇÈíˆìxÇÃÉÅÉÇÉäÇÃêflñÒÇ…Ç»ÇËÇ‹Ç∑Ç™ÅAìßñæâªÇÕégópÇ≈Ç´Ç‹ÇπÇÒÅBÅuNonRetainedÅvÇÃÉEÉCÉìÉhÉEÇ≈ÇÕÉOÉâÉtÉBÉbÉNÉXèàóùÇÕãLò^Ç≥ÇÍÇ‹ÇπÇÒÅB
Encoding ÉEÉCÉìÉhÉEÉoÉbÉtÉ@ÇÃê[Ç≥ÅiÉsÉNÉZÉãìñÇΩÇËÇÃÉrÉbÉgêîÅjÅBÉEÉCÉìÉhÉEÉoÉbÉtÉ@Ç…ÉAÉãÉtÉ@É`ÉÉÉlÉãÇ™ïtǢǃǢÇÈèÍçáÇÕÅAï∂éö -A Ç™í«â¡Ç≥ÇÍÇ‹Ç∑ÅBÉEÉCÉìÉhÉEÉoÉbÉtÉ@Ç…ÇÕÅAÉEÉCÉìÉhÉEÇÃÉ^ÉCÉgÉãÉoÅ[ÇΔÉtÉåÅ[ÉÄÅiÇ‹ÇΩÇÕÅACarbon ópåÍÇ≈Åuç\ë¢óÃàÊÅvÅjÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB
On ScreenÉEÉCÉìÉhÉEÇ™ÅAÉXÉNÉäÅ[Éìè„DždžÇËâ¬éãÇ≈džÇÈÇ©ÅAÇ‹ÇΩÇÕÉIÉtÉXÉNÉäÅ[ÉìÇ≈âBÇ≥ÇÍǃǢÇÈÇ©Çé¶ÇµÇ‹Ç∑ÅB
SharedÉEÉCÉìÉhÉEÇ™ã§óLÇ≥ÇÍǃǢÇÈǩǫǧǩÅBã§óLÉEÉCÉìÉhÉEÇÕÅAï°êîÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÊǡǃëÄçÏÇ≈Ç´Ç‹Ç∑ÅBîÒã§óLÉEÉCÉìÉhÉEÇÕÅAÅuApplicationÅvóÒÇ…éwíËÇ≥ÇÍǃǢÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÊǡǃÇÃÇ›èCê≥Ç™â¬î\Ç≈Ç∑ÅB
FadeÉEÉCÉìÉhÉEÇÃïsìßñæìxÅBïsìßñæìxÇÕÅAÉAÉãÉtÉ@É`ÉÉÉlÉãÇΔÇÕï™ó£ÇµÇƒÇ¢Ç‹Ç∑ÅBílÇÕ 0% Å` 100% ÇÃîÕàÕÇ≈ÅA0% ÇÕäÆëSÇ…ìßñæÇ»ÉEÉCÉìÉhÉEÇï\ǵÅA100% ÇÕäÆëSÇ…ïsìßñæÇ»ÉEÉCÉìÉhÉEÇï\ǵNjÇ∑ÅB
LevelÉEÉCÉìÉhÉEÇÃÉåÉxÉãÅBÇÊÇËçÇÉåÉxÉãÇÃÉEÉCÉìÉhÉEÇÅAéãäoè„ÅAí·ÉåÉxÉãÇÃÉEÉCÉìÉhÉEÇÃâ∫Ç…íuÇ≠DZÇΔÇÕÇ≈Ç´Ç‹ÇπÇÒÅBLONG_MIN + 1 Ç©ÇÁ LONG_MAX - 16 Ç‹Ç≈ÇÃílÇ™ÉTÉ|Å[ÉgÇ≥ÇÍǃǢNjÇ∑ÅB

ÅuToolsÅvÉÅÉjÉÖÅ[ÇÃÉIÉvÉVÉáÉì

ÅuToolsÅvÉÅÉjÉÖÅ[Ç…ÇÕÅAÇ¢Ç≠ǬǩÇÃÇŸÇ©ÇÃÉIÉvÉVÉáÉìLJdžÇËÇ‹Ç∑ÅB

ÅuShow/Hide Frame MeterÅvÇÕÅAê} 3 Ç…é¶Ç∑ÇÊǧǻÉpÉtÉHÅ[É}ÉìÉXÉtÉåÅ[ÉÄÉÅÅ[É^ÇÃï\é¶Å^îÒï\é¶ÇêÿÇËë÷ǶNjÇ∑ÅBDZÇÃÉtÉåÅ[ÉÄÉÅÅ[É^ÇÕÅA1 ïbìñÇΩÇËÇÃÉXÉNÉäÅ[ÉìçXêVâÒêîÇé¶ÇµÇƒÇ¢Ç‹Ç∑ÅBÇ≥ÇÁÇ…ÅACPU ÇÃégópó Çé¶Ç∑è¨å^Çà CPU ÉtÉåÅ[ÉÄÉÅÅ[É^LJä‹Ç‹ÇÍǃǢNjÇ∑ÅBDZÇÃÉEÉCÉìÉhÉEÇÕìßñæÇ≈džÇËÅAÉEÉCÉìÉhÉEÇÃîCà”ÇÃïîï™ÇÉNÉäÉbÉNǵǃÉhÉâÉbÉOÇ∑ÇÈDZÇΔÇ…ÇÊǡǃà⁄ìÆÇ≈Ç´Ç‹Ç∑ÅB

QuartzDebug frame meter
ê} 3. ÉtÉåÅ[ÉÄÉÅÅ[É^

ÅuDisable/Enable Quartz ExtremeÅvÇÕÅAÉVÉXÉeÉÄÇ≈ Quartz Extreme Çñ≥å¯Ç…ǵÇΩÇËÅAçƒìxóLå¯Ç…ǵÇΩÇËÇ∑ÇÈÇΔÇ´Ç…égǢNjÇ∑ÅBè⁄ç◊DžǬǢǃÇÕÅAQuartz Extreme ÉyÅ[ÉWÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB

ÅuRefresh Windows ListÅvÇÕÅAÉIÉvÉVÉáÉìÉEÉCÉìÉhÉEÇ©ÇÁéÊìæÇµÇΩÉEÉCÉìÉhÉEÉäÉXÉgÇç≈êVÇÃèÓïÒÇ…çXêVǵNjÇ∑ÅB


[2002 îN 3 åé 27 ì˙]